package cn.demoncat.util.sec;

import org.apache.commons.codec.binary.Hex;

import cn.demoncat.util.lang.StringUtil;

/**
 * Hex 十六进制编解码
 * 
 * @author 延晓磊
 *
 * @since 2016年8月11日
 */
public class HexUtil {
 
	/**
	 * 编码
	 * 
	 * @param data	源数据
	 * @return 十六进制字符串
	 * 
	 * @author 延晓磊
	 *
	 * @since 2016年8月11日
	 */
	public static String encode(byte[] data){
		try {
			return Hex.encodeHexString(data);
		} catch (Exception e) {
			throw new RuntimeException("参数错误",e);
		}
	}
	
	/**
	 * 编码
	 * 
	 * @param data	源数据
	 * @return 十六进制字符串
	 * 
	 * @author 延晓磊
	 *
	 * @since 2016年8月11日
	 */
	public static String encode(String data){
		return encode(StringUtil.getBytes(data));
	}

	/**
	 * 解码
	 * 
	 * @param hex	十六进制字符串
	 * @return 源数据
	 * 
	 * @author 延晓磊
	 *
	 * @since 2016年8月11日
	 */
	public static byte[] decode(String hex){
		try {
			return Hex.decodeHex(hex.toCharArray());
		} catch (Exception e) {
			throw new RuntimeException("参数错误",e);
		}
	}

	/**
	 * 解码
	 * 
	 * @param hex	十六进制字符串
	 * @return 源数据
	 * 
	 * @author 延晓磊
	 *
	 * @since 2016年8月11日
	 */
	public static String decodeStr(String hex){
		return StringUtil.getStr(decode(hex));
	}
}
